package ejb.cbm.operatoria.session;

import java.util.List;

import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import ejb.cbm.operatoria.entity.OperacionCajaBovedaEntity;
import ejb.cbm.operatoria.local.OperacionCajaBovedaSessionLocal;

////@Stateless
public class OperacionCajaBovedaSession extends HibernateDaoSupport implements OperacionCajaBovedaSessionLocal {
	
	static Logger logger = Logger.getLogger(OperacionCajaBovedaSession.class.getName());
	
	//property constants
	public static final String TIPOCAJA = "tipocaja";
	public static final String CODIGOTERMINAL = "codigoterminal";
	public static final String CODIGODIVISA = "codigodivisa";
	public static final String CODIGOPADRE = "codigopadre";
	public static final String MONTOTOTAL = "montototal";
	public static final String MONTODETERIORADOS = "montodeteriorados";
	public static final String PATRONCALIDAD = "patroncalidad";
	public static final String CAMPO500 = "campo500";
	public static final String CAMPO200 = "campo200";
	public static final String CAMPO100 = "campo100";
	public static final String CAMPO50 = "campo50";
	public static final String CAMPO20 = "campo20";
	public static final String CAMPO10 = "campo10";
	public static final String CAMPO5 = "campo5";
	public static final String CAMPO2 = "campo2";
	public static final String CAMPO1 = "campo1";
	public static final String CAMPO05 = "campo05";
	public static final String CAMPO02 = "campo02";
	public static final String CAMPO01 = "campo01";
	public static final String CAMPO005 = "campo005";
	public static final String CAMPO002 = "campo002";
	public static final String CAMPO001 = "campo001";
	public static final String IMPORTETRASPASO = "importetraspaso";
	public static final String COMENTARIOTRASPASO = "comentariotraspaso";
	public static final String DESTINO = "destino";
	public static final String ORIGEN = "origen";
	public static final String ESTADOIMPRESION = "estadoimpresion";
	public static final String FLAGEXTORNO = "flagextorno";
	public static final String FLAGCONFIRMAR = "flagconfirmar";
	public static final String USUARIOAUTORIZACION = "usuarioautorizacion";
	public static final String CODIGOMOTIVOAUTORIZACION = "codigomotivoautorizacion";
	public static final String OBSERVACIONAUTORIZACION = "observacionautorizacion";
	public static final String USUARIOREGISTRO = "usuarioregistro";
	public static final String USUARIOMODIFICACION = "usuariomodificacion";

    //@PersistenceContext 
	//private EntityManager entityManager;
	@Autowired
	public OperacionCajaBovedaSession(SessionFactory sessionFactory){
		super.setSessionFactory(sessionFactory);
	}
	
    public void save(OperacionCajaBovedaEntity transientInstance) {
    	logger.log("saving OperacionCajaBovedaEntity instance", Level.INFO, null,null);
        try {
            getSession().persist(transientInstance);
            logger.log("save successful", Level.INFO, null,null);
        } catch (RuntimeException re) {
        	logger.log("save failed", Level.FATAL,null, re);
            throw re;
        }
    }
    
    public void delete(OperacionCajaBovedaEntity persistentInstance) {
    	logger.log("deleting OperacionCajaBovedaEntity instance", Level.INFO, null,null);
        try {
            getSession().delete(persistentInstance);
            logger.log("delete successful", Level.INFO, null,null);
        } catch (RuntimeException re) {
        	logger.log("delete failed", Level.FATAL,null, re);
            throw re;
        }
    }
    
    public OperacionCajaBovedaEntity update(OperacionCajaBovedaEntity detachedInstance) {
    	logger.log("updating OperacionCajaBovedaEntity instance", Level.INFO, null,null);
        try {
            OperacionCajaBovedaEntity result = (OperacionCajaBovedaEntity) getSession().merge(detachedInstance);
            logger.log("update successful", Level.INFO, null,null);
            return result;
        } catch (RuntimeException re) {
        	logger.log("update failed", Level.FATAL,null, re);
            throw re;
        }
    }
    
    public OperacionCajaBovedaEntity findById( Long id) {
    	logger.log("finding OperacionCajaBovedaEntity instance with id: " + id, Level.INFO, null,null);
        try {
            OperacionCajaBovedaEntity instance = (OperacionCajaBovedaEntity) getSession().get(OperacionCajaBovedaEntity.class, id);
            return instance;
        } catch (RuntimeException re) {
        	logger.log("find failed", Level.FATAL,null, re);
            throw re;
        }
    }
    
    //@SuppressWarnings("unchecked")
    public List<OperacionCajaBovedaEntity> findByProperty(String propertyName, Object value) {
    	logger.log("finding OperacionCajaBovedaEntity instance with property: " + propertyName
    						+ ", value: " + value, Level.INFO, null,null);
		try {
			String queryString = "select model from OperacionCajaBovedaEntity model where model." 
			 						+ propertyName + "= :propertyValue";
			return getSession().createQuery(queryString)
 				.setParameter("propertyValue", value).list();
		} catch (RuntimeException re) {
			logger.log("find by property name failed", Level.FATAL,null, re);
			throw re;
		}
	}
	
	public List<OperacionCajaBovedaEntity> findByTipocaja(Object tipocaja) {
		return findByProperty(TIPOCAJA, tipocaja);
	}
	
	public List<OperacionCajaBovedaEntity> findByCodigoterminal(Object codigoterminal) {
		return findByProperty(CODIGOTERMINAL, codigoterminal);
	}
	
	public List<OperacionCajaBovedaEntity> findByCodigodivisa(Object codigodivisa) {
		return findByProperty(CODIGODIVISA, codigodivisa);
	}
	
	public List<OperacionCajaBovedaEntity> findByCodigopadre(Object codigopadre) {
		return findByProperty(CODIGOPADRE, codigopadre);
	}
	
	public List<OperacionCajaBovedaEntity> findByMontototal(Object montototal) {
		return findByProperty(MONTOTOTAL, montototal);
	}
	
	public List<OperacionCajaBovedaEntity> findByMontodeteriorados(Object montodeteriorados) {
		return findByProperty(MONTODETERIORADOS, montodeteriorados);
	}
	
	public List<OperacionCajaBovedaEntity> findByPatroncalidad(Object patroncalidad) {
		return findByProperty(PATRONCALIDAD, patroncalidad);
	}
	
	public List<OperacionCajaBovedaEntity> findByCampo500(Object campo500) {
		return findByProperty(CAMPO500, campo500);
	}
	
	public List<OperacionCajaBovedaEntity> findByCampo200(Object campo200) {
		return findByProperty(CAMPO200, campo200);
	}
	
	public List<OperacionCajaBovedaEntity> findByCampo100(Object campo100) {
		return findByProperty(CAMPO100, campo100);
	}
	
	public List<OperacionCajaBovedaEntity> findByCampo50(Object campo50) {
		return findByProperty(CAMPO50, campo50);
	}
	
	public List<OperacionCajaBovedaEntity> findByCampo20(Object campo20) {
		return findByProperty(CAMPO20, campo20);
	}
	
	public List<OperacionCajaBovedaEntity> findByCampo10(Object campo10) {
		return findByProperty(CAMPO10, campo10);
	}
	
	public List<OperacionCajaBovedaEntity> findByCampo5(Object campo5) {
		return findByProperty(CAMPO5, campo5);
	}
	
	public List<OperacionCajaBovedaEntity> findByCampo2(Object campo2) {
		return findByProperty(CAMPO2, campo2);
	}
	
	public List<OperacionCajaBovedaEntity> findByCampo1(Object campo1) {
		return findByProperty(CAMPO1, campo1);
	}
	
	public List<OperacionCajaBovedaEntity> findByCampo05(Object campo05) {
		return findByProperty(CAMPO05, campo05);
	}
	
	public List<OperacionCajaBovedaEntity> findByCampo02(Object campo02) {
		return findByProperty(CAMPO02, campo02);
	}
	
	public List<OperacionCajaBovedaEntity> findByCampo01(Object campo01) {
		return findByProperty(CAMPO01, campo01);
	}
	
	public List<OperacionCajaBovedaEntity> findByCampo005(Object campo005) {
		return findByProperty(CAMPO005, campo005);
	}
	
	public List<OperacionCajaBovedaEntity> findByCampo002(Object campo002) {
		return findByProperty(CAMPO002, campo002);
	}
	
	public List<OperacionCajaBovedaEntity> findByCampo001(Object campo001) {
		return findByProperty(CAMPO001, campo001);
	}
	
	public List<OperacionCajaBovedaEntity> findByImportetraspaso(Object importetraspaso) {
		return findByProperty(IMPORTETRASPASO, importetraspaso);
	}
	
	public List<OperacionCajaBovedaEntity> findByComentariotraspaso(Object comentariotraspaso) {
		return findByProperty(COMENTARIOTRASPASO, comentariotraspaso);
	}
	
	public List<OperacionCajaBovedaEntity> findByDestino(Object destino) {
		return findByProperty(DESTINO, destino);
	}
	
	public List<OperacionCajaBovedaEntity> findByOrigen(Object origen) {
		return findByProperty(ORIGEN, origen);
	}
	
	public List<OperacionCajaBovedaEntity> findByEstadoimpresion(Object estadoimpresion) {
		return findByProperty(ESTADOIMPRESION, estadoimpresion);
	}
	
	public List<OperacionCajaBovedaEntity> findByFlagextorno(Object flagextorno) {
		return findByProperty(FLAGEXTORNO, flagextorno);
	}
	
	public List<OperacionCajaBovedaEntity> findByFlagconfirmar(Object flagconfirmar) {
		return findByProperty(FLAGCONFIRMAR, flagconfirmar);
	}
	
	public List<OperacionCajaBovedaEntity> findByUsuarioautorizacion(Object usuarioautorizacion) {
		return findByProperty(USUARIOAUTORIZACION, usuarioautorizacion);
	}
	
	public List<OperacionCajaBovedaEntity> findByCodigomotivoautorizacion(Object codigomotivoautorizacion) {
		return findByProperty(CODIGOMOTIVOAUTORIZACION, codigomotivoautorizacion);
	}
	
	public List<OperacionCajaBovedaEntity> findByObservacionautorizacion(Object observacionautorizacion) {
		return findByProperty(OBSERVACIONAUTORIZACION, observacionautorizacion);
	}
	
	public List<OperacionCajaBovedaEntity> findByUsuarioregistro(Object usuarioregistro) {
		return findByProperty(USUARIOREGISTRO, usuarioregistro);
	}
	
	public List<OperacionCajaBovedaEntity> findByUsuariomodificacion(Object usuariomodificacion) {
		return findByProperty(USUARIOMODIFICACION, usuariomodificacion);
	}
	

	//@SuppressWarnings("unchecked")
	public List<OperacionCajaBovedaEntity> findAll() {
		logger.log("finding all OperacionCajaBovedaEntity instances", Level.INFO, null,null);
		try {
			String queryString = "select model from OperacionCajaBovedaEntity model";
			return getSession().createQuery(queryString).list();
		} catch (RuntimeException re) {
			logger.log("find all failed", Level.FATAL,null, re);
			throw re;
		}
	}
}